package ACwing.P2DataSturcture;

import java.util.Scanner;

/**
 * @Date : 2023-03-02
 * @Description:826. 单链表  ，用数组实现
 */
public class SingleLinkedList {
    static int N=100010;
    /*head表示头结点的下标
    e[i]表示节点i的值，
    en[i]表示i的next指针是多少
    idx存储当前用到哪个点，下一个可用的*/
    static int head,idx;
    static int [] e=new int[N],ne=new int[N];
    static Scanner sc=new Scanner(System.in);
    public static void main(String[] args) {
        init();
        int m=sc.nextInt();
        while(m-->0){
            int k,x;
            String oper=sc.next();
            if(oper.equals("H")){
                x = sc.nextInt();
                add_to_head(x);
            }
            else if(oper.equals("D")){
                k=sc.nextInt();
                if(k==0) head=ne[head];
                else remove(k-1);
            }
            else if(oper.equals("I")){
                k = sc.nextInt();
                x = sc.nextInt();
                add(k-1,x);
            }
        }

        for (int i = head; i !=-1; i=ne[i]) {
            System.out.print(e[i]+" ");
        }
    }
    //初始化
    public static  void init(){
        head=-1;
        idx=0;
    }
    //将x插到头结点
    public  static void add_to_head(int x){
        e[idx]=x;
        ne[idx]=head;
        head=idx++;
    }
    //将x插入到下标k的后面
    public  static void add(int k,int x){
        e[idx]=x;
        ne[idx]=ne[k];
        ne[k]=idx++;
    }
    //删除下标是k的节点
    public  static void remove(int k){
        ne[k]=ne[ne[k]];
    }
}
